Skip to main content

07 基于原型的编程范式

基于原型(Prototype)的编程其实也是面向对象编程的一种方式。没有 class 化的,直接使用对象。又叫基于实例的编程。

JavaScript 的原型概念

JavaScript 基于原型编程,不要 Class,直接在对象上改,基于编程的修改,直接对类型进行修改。

var foo = {name: "foo", one: 1, two: 2};

var bar = {three: 3};

每个对象都有一个 proto 的属性,这个就是原型。

bar.__proto__ = foo; // foo is now the prototype of bar.

在 bar 里面访问 foo 的属性

// If we try to access foo's properties from bar 
// from now on, we'll succeed.
bar.one // Resolves to 1.

// The child object's properties are also accessible.
bar.three // Resolves to 3.

// Own properties shadow prototype properties
bar.name = "bar";
foo.name; // unaffected, resolves to "foo"
bar.name; // Resolves to "bar"
  • proto :安放在实际的对象中,用它来产生原型链,用于寻找方法名或属性等。
  • prototype :用 new 来创建一个对象时构造 proto 用的,是构造函数的一个属性。